﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DoNetToolKit.Patterns.SimpletFactory
{
    /***
     * 工厂角色（creator）：
     * 担任这个角色的是工厂方法模式的核心，含有与应用紧密相连的商业逻辑。
     *        
     * **/
    class SimpletFactory
    {
        // 根据传入的参数值确定创建出哪一个产品类的实例。
        public static Fruit GetFruitInstance(FruitType type)
        {
            Fruit fruit = null;
            // 当Fruit的子类被别的类替换，或者构造器的参数发生变化时，
            // 只需改动工厂方法的new即可。
            switch (type)
            {
                case FruitType.Apple:
                    fruit = new Apple();
                    break;
                case FruitType.Orange:
                    fruit = new Orange();
                    break;
                case FruitType.Banana:
                    fruit = new Banana();
                    break;
            }
            return fruit;
        }
    }

    enum FruitType
    {
        Apple,
        Orange,
        Banana,
    }
}
